Условные выражения
Категория:Обучение Эта статья научит вас, как заставить ваш скрипт реагировать на разные ситуации. Выражение If Условные выражения - это один из фундаментальных строительных элементов для любого языка программирования. Они являются именно тем, чем кажутся: если условие истинное, то выполняется блок кода. Самая простая форма условного выражения, доступная в Lua - это выражение "If", которое обозначает, что, если одно или более условий являются истинными, последующий блок кода будет выполнен. Выражение If имеет следующий вид: local Variable = 1 if Variable 1 then write("The variable is 1!\n") end if Variable 2 then write("The variable is 2!\n") end Этот скрипт просто выведет текст "The variable is 1!". Оператор " " просто означает "идентично", поэтому код можно прочитать так: "Если переменная Variable равна 1, то сделать то-то". "end" отмечать конец блока кода и весь код после него выполняется нормально, вне зависимости от выполнения условий (закрывает выражение If). Скобки могут быть при желании использованы в условиях, хотя они не необходимы, если вы не хотите контролировать порядок вычисления. Отметим, что поскольку новая строка для Lua не имеет значения, можно писать и так: if Variable 1 then write("The variable is 1!\n") end Однако, этот метод обычно менее читабелен и используется редко. Lua определяет, истинно ли выражение if, используя логические (булевские) значения, возвращаемые условиями, поэтому можно (но не необходимо) вводить логическое значение в качестве условия: if true then write("This will always write!\n") end if false then write("This will never write!\n") end Доступные условия Вот список разных условий, которые могут быть использованы для построения условного выражения. ;Равно if Variable Variable2 then --Do stuff end Условие " " является наиболее базовым оператором, просто сравнивает два значения и проверяет их идентичность. Если оба значения идентичны, условие истинно и выполняются операторы. ;Неравно if Variable ~= Variable2 then --Do stuff end Условие "~=" сравнивает два значения и проверяет их идентичность. Если они не идентичны, условие истинно и выполняются операторы. ;Больше if Number > Number2 then --Do stuff end Условие ">" сравнивает два числа и, если первое число больше, чем другое, условие истинно и выполняются операторы. Условие ">=" (больше или равно) действует как одновременные условия "больше" и "равно", что значит, что условие истинно, либо если первое число равно второму, либо если первое число больше второго. ;Меньше if Number < Number2 then --Do stuff end Условие "<" сравнивает два числа и, если первое меньше другого, условие истинно и выполняются операторы. Условие "<=" (меньше или равно) действует как комбинация условий "меньше" и "равно". And, Or, Not Иногда желательно совместить условия. Хотя можно использовать множественные выражения if или if-ы внутри if-ов, лучше использовать "and" и "or", если возможно. ;And local Num1,Num2,Num3 = 1,2,3 --Multiple if if Num1 > Num2 then if Num2 < Num3 then write("Condition is true!") end end --Using And if (Num1>Num2) and (Num2 Num2 then write("Condition is true!") end if Num2 < Num3 then write("Condition is true!") end --Using Or if (Num1>Num2) or (Num2 Num3) then write("Condition is true!") end Выражение "not" редко является необходимым. Оно может быть использовано, чтобы реверсировать значение от "true" к "false" или наоборот. Выражение Else Это вполне логично, что вам может понадобиться выполнить какой-то код в случае ложности условий. В таком случае это может быть достигнуто с помощью использования двух отдельных выражений "if", однако проще использовать выражение "else": local Num1 = 1 local Num2 = 2 --Using multiple if if Num1 > Num2 then write("Number 1 is greater!\n") end if Num1 <= Num2 then write("Number 1 is not greater!\n") end --Using else if Num1>Num2 then write("Number 1 is greater!\n") else write("Number 1 is not greater!\n") end Выражение ElseIf Иногда желательно выполнить код после "else" только при определенных условиях. Вот когда становится полезен "elseif". Он действует так, как если бы он был другим выражением if, но также функционирует как "else" для того if-а, в который входит. local Num1, Num2, Num3 = 1,2,3 --With elseif if Num1>Num2 then write("First condition passed!\n") elseif Num3>Num2 then write("First condition failed, second condition passed!\n") end The "elseif" statement can become even more useful if you chain together more "elseif"s and "else"s with it, but remember that the first if that passes will break the chain! if Bool then --Stuff elseif Var1 Var2 then --Other stuff elseif Table1 then --More stuff else --More again! end